perm filename DFTP.MRC[UP,DOC]7  blob 
sn#281110 filedate 1977-05-10 generic text, type C, neo UTF8
 
COMMENT ⊗   VALID 00030 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002
C00003 00003
C00006 00004
C00009 00005
C00012 00006
C00015 00007
C00018 00008
C00020 00009
C00023 00010
C00027 00011
C00031 00012
C00034 00013
C00037 00014
C00039 00015
C00042 00016
C00045 00017
C00048 00018
C00051 00019
C00054 00020
C00057 00021
C00060 00022
C00062 00023
C00065 00024
C00068 00025
C00070 00026
C00071 00027
C00073 00028
C00076 00029
C00079 00030	
C00080 ENDMK
C⊗;
                 Computer Corporation of America
                      Technical Bulletin 1
                        DFTP User's Guide
                           April 1977
                           W. R. Bush
                          Introduction
     DFTP is a user-invoked file archiving program that, via  the
Arpanet,  stores and retrieves local files on the Datacomputer, a
dedicated data management system.  This Introduction is  intended
to  provide  information sufficient for basic use of the program.
A general description of it and information on its more  esoteric
features can be found in the following sections.
     DFTP command processing is similar  to  that  in  TENEX  and
TOPS-20.   Both <control-A> and <rubout> delete a character, both
<control-U>  and  <control-X>  delete  a  line,  and  <control-R>
retypes  a line.  A <space> or <escape> can be used to complete a
command (for example, typing DI<space> is  equivalent  to  typing
DIRECTORY).
     Since DFTP's primary function is file storage and retrieval,
the  most  fundamental commands are those that store and retrieve
files -- PUT and GET.  Both take as an argument the name  of  the
file  of  interest  (in  the  standard format of name followed by
optional extension), so that
          PUT MAIL.TXT
causes the local file MAIL.TXT to be shipped over the network  to
the Datacomputer, and
          GET MAIL.TXT retrieves it.
     Groups of files may be moved with one command by using a '*'
in  either or both the name and extension parts of the file name.
Thus
                              - i -
          PUT MAIL.*
stores all files with the name MAIL, and
          GET *.TXT
retrieves all files with the extension TXT.
     Files  may  be  given  different  names  when   stored   and
retrieved.   This  is  accomplished  by  inputting  a  <space> or
<escape> after the first file name, so that
          PUT MAIL.TXT<space>MAIL.15-APRIL-1977
stores the local file MAIL.TXT as MAIL.15-APRIL-1977, and
          GET MAIL.15-APRIL-1977<space>MAIL.OLD
retrieves the stored file MAIL.15-APRIL-1977 as  the  local  file
MAIL.OLD.
     Different versions of the same file can be stored, with  the
Datacomputer assigning higher numbers to more recent files.  Thus
storing  one  day's  messages  as MAIL.TXT, and later storing the
next day's messages as MAIL.TXT  results  in  two  files  on  the
Datacomputer,   MAIL.TXT;1   (the   messages  stored  first)  and
MAIL.TXT;2 (the messages  stored  later).   Version  numbers  are
denoted  as in TENEX, with the number following the file name and
separated from it by a ';'.   Version  numbers  may  be  used  in
retrieving files, so that
          GET MAIL.TXT;1
retrieves the first version of the file.  If no version number is
given,  DFTP  uses the largest as the default.  A '*' may be used
in the version number field, so that
          GET MAIL.TXT;*
retrieves all versions.
                             - ii -
     Nearly as fundamental as storing  and  retrieving  files  is
finding  out  what  files have been stored -- what files exist on
the Datacomputer.  The DIRECTORY command performs this  function,
taking  as  its  argument a file name similar to that accepted by
PUT and GET.  Thus
          DIRECTORY *.TXT
lists all stored files with the extension TXT.  Note that
          DIRECTORY <space>
(DFTP echoes the <space> as '*.*;*') causes all stored  files  to
be  listed.  The command takes as a subargument the specification
of the amount of information desired about the listed  files.   A
<space>,  equivalent  to  TERSE, lists files and their sizes. The
VERBOSE  option  additionally  lists  the  date  the   file   was
originally   created   and   the   date  it  was  stored  on  the
Datacomputer.
     Another important  facility  is  the  ability  to  eliminate
unwanted  files on the Datacomputer.  This is done via the DELETE
and EXPUNGE commands.
     The DELETE command, taking  as  its  argument  a  file  name
similar  to that accepted by PUT and GET, marks files as deleted,
but does not permanently remove them.  Deleted status is  only  a
conditional  state.   Deleted  files may be listed by the DELETED
option of the DIRECTORY command, and a file's deleted status  may
be rescinded by the UNDELETE command.  The UNDELETE command takes
as its argument a file name similar to DELETE.  Thus
          DELETE MAIL.*
marks all files with the name MAIL as deleted, and
                             - iii -
          UNDELETE MAIL.15-APRIL-1977
rescinds the deleted status of the file MAIL.15-APRIL-1977.  Note
that, for files of which there are multiple versions, the default
for  DELETE  is  the  (undeleted)  file with the smallest version
number, and for UNDELETE is the (deleted) file with  the  largest
version number.
     The EXPUNGE  command  permanently  removes  all  files  then
marked  as deleted, recovering the space used by those files.  It
takes no arguments (as far as this  Introduction  is  concerned),
and is invoked by typing
          EXPUNGE <space><space>
(DFTP echoes the first <space> as '<').
     The QUIT command causes a graceful exit from DFTP.
               Introduction to Additional Commands
     The commands described  in  the  followings  paragraphs  are
useful,  but  are  not  necessary for ordinary use of DFTP.  They
introduce  complexities  discussed  in   later   sections.    The
information and explanations in this section are of limited scope
in an attempt to keep the complexity at a minimum.
     The commands discussed here are  motivated  by  one  general
concern  --  the desire to divide a user's file space into parts.
DFTP allows such separation via user-specified  named  groupings,
called  subdirectories.  For example, one typically divides files
into classes by type,  such  as  MESSAGES,  SOURCES,  and  GAMES.
                             - iv -
Subdirectories may be thought of as containing files and as being
under  --  subordinate  to -- the user's Datacomputer identity --
the user's name.  For example, the user HACKER at CCA has, on the
datacomputer, under the  user  name  HACKER,  the  subdirectories
MESSAGES,  SOURCES,  and  GAMES.   One  need  not  have  separate
subdirectories -- all one's files may be  stored  directly  under
one's  user  name.   Alternatively,  some  files  may  be  stored
directly  under  one's   user   name   and   some   in   separate
subdirectories,   or   all   files  may  be  stored  in  separate
subdirectories.
     All the commands in the  preceding  section  operate  within
only  one subdirectory at a time.  The CONNECT command is used to
choose which subdirectory is of interest.  Once a subdirectory is
chosen, all PUT's, GET's, DIRECTORY's, DELETE's, UNDELETE's,  and
EXPUNGE's  operate  within  that  subdirectory  until  another is
chosen.  Thus
          CONNECT MESSAGES
selects the MESSAGES  subdirectory.   CONNECT  also  creates  new
subdirectories.  If in the above example, MESSAGES did not exist,
DFTP  would  inform  the user of that fact with the comment '[New
Node]', and would ask for confirmation to proceed  and  make  the
new subdirectory.
     The files stored directly under one's user  name  are  in  a
special  subdirectory.   At  the  beginning  of  a  session  this
subdirectory is the default  subdirectory  that  all  PUT's  etc.
operate in (making possible use of DFTP by people who are unaware
of  subdirectories).   If  one  has  explicitly CONNECTed to some
                              - v -
other subdirectory and wishes to  go  back  and  reference  files
directly under one's user name,
          CONNECT <space>
(DFTP  echoes  the  <space>  as  '<<')  will  perform the desired
function.
     One may see one's existing subdirectories, when connected to
the initial default subdirectory, via the LIST  command,  in  the
form
          LIST <space>
(DFTP  echoes  the  <space>  as  '**').  LIST takes a subargument
similar to DIRECTORY.  A <space>,  equivalent  to  TERSE,  simply
lists  the  subdirectories,  while  VERBOSE  lists  all available
information about them, including megabits allocated  (MX-U)  and
used  (CHRG).   The  symbol  <FILES>  indicates  that  some files
actually exist in the associated subdirectory.
     One  may  delete  subdirectories  and  their   files,   when
connected  to  the  initial  default subdirectory, via the REMOVE
command.  The subdirectory name given the command as its argument
should be terminated in a <space>.  Thus
          REMOVE MESSAGES<space>
(DFTP echoes the <space> as '>**')  eliminates  the  subdirectory
MESSAGES and all files in it.
                             - vi -
                            Overview
     The Datacomputer is a shared large-scale data  base  utility
offering  data  storage  and  data  management  services to other
computers on the Arpanet.  The system is a  centralized  facility
for archiving data, for sharing data among various network hosts,
and  for  providing inexpensive on-line storage for sites needing
to  supplement  their  local  capability.   The  Datacomputer  is
implemented  on  dedicated  hardware  and  comprises  a  separate
computing system specialized for data management.  The system can
be viewed logically as a closed box shared by  multiple  external
processors   and   accessed   in   a   standard  notation  called
Datalanguage.
     The Datacomputer File Transfer  Program  (DFTP)  provides  a
convenient  method  for storing and retrieving local files on the
Datacomputer  via  the  Arpanet.   DFTP  translates  simple  user
commands  into  Datalanguage,  sends the Datalanguage and data to
the Datacomputer, processes the messages and data  returned  from
the Datacomputer, and notifies the user of the results.
                          The Directory
     The DFTP Datacomputer directory is a tree, with  site  nodes
beneath  a  common  root node, user nodes beneath site nodes, and
optional subdirectories of arbitrary depth  and  breadth  beneath
                              - 1 -
user  nodes.   Files  are  stored  in  special  leaf nodes called
<FILES> nodes.  Pictorially,
                       <ROOT>
                       /    \
                   SITE      SITE    ...
                  /    \
              USER      USER    ...
             /    \
       <FILES>     SUBDIRECTORY    ...
                  /            \
            <FILES>             SUBDIRECTORY    ...
                                            \
                                            <FILES>    ...
The <FILES> nodes are the repositories of  all  data.   To  avoid
ambiguity,  there can be only one <FILES> node directly under any
given user or subdirectory node.
     There  are  two  basic  types  of  commands  --  those  that
reference  only  nodes  and  those  that reference files within a
<FILES> node.  Node level commands are used for manipulating  the
               ←←←← ←←←←← ←←←←←←←←
global  directory  structure of sites, users, and subdirectories.
A node level command takes a node path (described below)  as  its
                             ←←←← ←←←←
argument.   File level commands are used for storing, retrieving,
            ←←←← ←←←←← ←←←←←←←←
and modifying files within a <FILES> node.  A file level  command
takes  as  its  argument  a file name (described below) or a node
                            ←←←← ←←←←
path followed by a file name, called a file path (for referencing
                                       ←←←← ←←←←
files under nodes other than the defaults used by DFTP).
                        Referencing Nodes
     The mechanism for referencing a node, called a node path, is
                                                    ←←←← ←←←←
a means of specifying a path  through  the  directory  tree.   It
consists of a context and a node list.
              ←←←←←←←       ←←←← ←←←←
                              - 2 -
     Contexts  provide  convenient  anchoring  points  for   node
     ←←←←←←←←
references.   The  three  contexts  are top, attach, and connect,
                                        ←←←  ←←←←←←      ←←←←←←←
indicated by '<<<', '<<', and '<' respectively.
     The top context provides an absolute starting point for node
references.  It anchors a reference to the highest fixed star  in
the  directory  firmament  --  the  <ROOT>  node.  One may always
reference any node in the directory by indicating the top context
and  then  listing  all  the   nodes   (the   site,   user,   and
subdirectories) between the <ROOT> node and the node of interest.
The  context  also  allows  reference to nodes higher in the tree
(sites and users) than the other contexts.
     The attach context is set, automatically at the beginning of
a session by DFTP, to be the user's user node.   Thus  references
to  subdirectories, if prefaced with the attach context, need not
include the site and user (as compared  with  the  top  context).
The  context  can  be  changed  by the ATTACH command, usually to
another user.  The attach context provides a fixed point above  a
user's  subdirectories  for manipulating and choosing among them.
     The connect context is set, automatically at  the  beginning
of  a  session by DFTP, to be the same as the attach context.  It
is conceptually similar to the attach context in being a  movable
point  in  the  directory,  but  it is usually lower in the tree,
usually a  subdirectory.   It  can  be  changed  by  the  CONNECT
command,  usually  to  another  subdirectory.   It is usually the
point from which files are referenced.
     Contexts need not be  explicitly  given  by  the  user  when
specifying  a  node  path.   For the default contexts provided by
                              - 3 -
DFTP see the Command Input section.  Note also that a context can
be a complete node  reference.   A  node  may  be  referenced  by
specifying  only  a context (without a node list) if that context
has been previously set to that node.  For  example,  one's  user
node may be referenced via the attach context.
     A node  list  consists  of  a   sequence   of   node   names
       ←←←←  ←←←←
(consecutive  levels  in the tree) separated by '>'s.  A password
may be necessary in acquiring access privileges at  a  particular
node,  in  which  case  the  node name is followed by ':' and the
password.  Sets of nodes can be referenced  --  all  nodes  at  a
particular level are indicated by '*', and all inferior nodes are
designated  by  '**' (which can occur only at the end of the node
list).
     For example:
          <<<CCA>HACKER:DINKUP>WALDO
Starting at  the  top  context,  the  node  path  references  the
subdirectory  WALDO  under  user  HACKER  at  site  CCA (with the
password DINKUP supplied to gain access to HACKER).
          <<WALDO>**
Starting at the attach context,  the  node  path  references  the
subdirectory  WALDO  and  all inferior nodes.  Note that WALDO is
included -- the REMOVE command, for  example,  would  delete  the
node WALDO as well as its inferiors.
                              - 4 -
                        Referencing Files
     File names have the same form as TENEX file names:  a  name,
     ←←←← ←←←←←
an  optional extension, and an optional version number.  The name
is separated from the extension by a period,  and  the  extension
from  the  version  number  by  a  semicolon.   File  sets may be
indicated by an asterisk in any or all of the fields.
     Version numbers allow unambiguous reference  of  files  that
have  the  same  name  and  extension.   DFTP assigns each file a
version number which is unrelated to its TENEX or TOPS-20 version
number.  Later  versions  of  a  file  with  the  same  name  and
extension  receive  higher version numbers.  If the user does not
explicitly supply a version number  in  referencing  an  existing
file, DFTP provides a default.
     All  commands  that  accept  a  file  name  as   input   can
alternatively  accept  a file path, which consists of a node path
                         ←←←← ←←←←
followed by a file name.  The two parts  are  separated  by  '>',
unless  the node path is only a context, in which case the '>' is
omitted.
     Note that the user never specifies a <FILES> node explicitly
in referencing a file.  If a file path is given, DFTP expands the
reference to refer to the given file in the  <FILES>  node  under
the  given  node.  If only a file name is given, DFTP expands the
reference to refer to the given file in the  <FILES>  node  under
the default context node.
     For example:
                              - 5 -
          MAIL.TXT
The  file  name  references the file MAIL.TXT in the <FILES> node
under the connect context.
          <*.SAV;*
The file name references all  versions  of  all  files  with  the
extension SAV in the <FILES> node under the connect context.
          <<MACROS>COMMON>SYSMAC.MAC
Starting at the attach context (presumably a user node), the file
path references the file SYSMAC.MAC in the <FILES> node under the
COMMON subdirectory of the MACROS subdirectory.
                          Command Input
     DFTP command input is similar to  TENEX  and  TOPS-20,  with
command  recognition  and  a  combination  of  TENEX  and TOPS-20
editing controls.  In particular,
          <control-A> and <rubout> delete a character,
          <control-R> retypes a line,
          <control-U> and <control-X> delete a line,
          <escape> and <space> are separators, and
          <carriage return>, <line feed>
                    and <end of line> are terminators.
     Node-oriented commands take node paths as  their  arguments.
File-oriented  commands  take  file  names or file paths as their
arguments.
                              - 6 -
     The connect context is   the   default   context   for   all
commands   except   ATTACH  and  CONNECT,  which  have  as  their
respective defaults the top context and the attach context.
     Many commands have  default  arguments  and  trailers  which
are invoked  by  giving  a  space  or  escape  as the argument or
argument terminator.   The  default  argument  is  '<<'  for  the
CONNECT  command,  '<'  for  EXPUNGE,   and  '**'  for  LIST  and
REMOVE,  which  is also the default trailer.  For DIRECTORY, GET,
PUT, DELETE, and UNDELETE,  the   default  argument  and  trailer
(after  a  '>') is '*.*;*'.  The default option for DIRECTORY and
LIST is TERSE.
                     Node-Oriented Commands
     The ATTACH command sets  the  attach  context  (and  connect
context) and initiates Datacomputer accounting functions.
     The BIG command is used for indicating that  a  subdirectory
is  to be a large one.  It creates an expanded <FILES> node under
the node given as the command argument.
     The CONNECT command sets the connect  context  (and  creates
new subdirectories).
     The EXPUNGE command removes files marked as deleted from the
<FILES>  node  under  the node given as the command argument.  If
the <FILES> node contains no files (deleted or undeleted)  it  is
removed from the Datacomputer directory.
                              - 7 -
     The LIST command lists  Datacomputer  nodes  (sites,  users,
subdirectories,  and  <FILES>)  and  information about them.  The
information displayed by the VERBOSE option comes  directly  from
the Datacomputer.
     The REMOVE  command  removes  nodes  from  the  Datacomputer
directory.   They  must  either have no inferior nodes (including
<FILES> nodes), or be part of a node set that  includes  inferior
nodes  ('**').   Data  stored  under  removed  nodes will also be
deleted.
                     File-Oriented Commands
     File deletion operates  as  with  TENEX  and  TOPS-20.   The
DELETE  command  marks  files  as deleted, but does not eliminate
them.  They can be listed via the VERBOSE option of the DIRECTORY
command, and their deleted status can be changed by the  UNDELETE
command.  The  removal  of  deleted  files  is  deferred until an
EXPUNGE is performed on the <FILES>  node  containing  them.  The
default version number is the lowest undeleted, unless a file set
is  indicated, in which case all versions in the set are deleted.
     The DIRECTORY command  lists  files  and  information  about
them.  The VERBOSE option lists deleted and undeleted files (with
deleted  ones indicated by 'D' after the name), the date and time
created (for TOPS-10 and ITS  sites),  the  date  and  time  last
written  (for TENEX and TOPS-20 sites), the date and time stored,
and the size.  For files stored from TENEX and TOPS-20 sites  the
                              - 8 -
size  information  is in the form <number of bytes>(<byte size>).
For files stored from TOPS-10 and ITS sites the information is in
the form <number of  36  bit  words>(-<data  mode)).   The  TERSE
option lists undeleted files and their sizes (in the same form as
the  VERBOSE  option).   The  DELETED option is the equivalent of
TERSE for deleted files.   The  default  version  number  is  the
highest  undeleted, unless a file set is indicated, in which case
information for all versions in the set is listed.
     The  EXAMINE  command  lists  on  the  user's  terminal  the
contents of the files given as the command argument.  The listing
of an individual file may be aborted by answering in the negative
the 'More?' prompt, which DFTP gives every few lines.
     The GET and PUT commands retrieve and store local disk files
on the Datacomputer. Files of any type (text or binary image, for
example)  can  be  stored.   If  a  synonym  is not supplied, the
Datacomputer file name is used as the local file  name.   If  the
first argument to either command is completed with an escape or a
space,  the  synonym  option  is  invoked  and  the commands then
operate in the form
          GET Datacomputer file [AS] local file, and
          PUT local file [AS] Datacomputer file.
For the GET command the default version  number  is  the  highest
undeleted,  unless  a  file  set  is indicated, in which case all
versions of the set are retrieved.   The  PUT  command  sets  the
version  number  of  the file being stored to be one greater than
the highest version of existing files  with  the  same  name  and
extension.  Note that a file set indicated in any file name field
                              - 9 -
is treated as if all existing files had the same field -- storing
*.*  results  in  the  stored files receiving version numbers one
greater than the highest version number  found  in  any  existing
file.
     The RENUMBER command changes a file's version number.  It is
the  only  mechanism  available to the user for affecting version
numbers.  The user specifies the file to be changed, after  which
DFTP  asks  for  the  new  version  number.   File  sets  may  be
specified, but only if a version number is explicitly given  with
the  file  set.   The  default  old  version number is the lowest
undeleted.  The default new version number is 1.
     The UNDELETE command rescinds a file's deleted status.   The
default  version number is the highest deleted, unless a file set
is  indicated,  in  which  case  all  versions  in  the  set  are
undeleted.
                     Miscellaneous Commands
     The   SHOW-DATALANGUAGE   and    NO-DATALANGUAGE    commands
respectively  allow and inhibit the output to the user's terminal
of the messages sent to and received from the Datacomputer.
     Data transfer rates are calculated and  given  to  the  user
when   the   TIME-TRANSFERS   command   has  been  invoked.   The
calculations are avoided with the UNTIME-TRANSFERS command.
     QUIT   exits   gracefully   from   DFTP,   closing   network
connections.
                             - 10 -
                            Responses
     There are three types of messages that DFTP gives the  user.
Comments    surrounded   by   square   brackets   are   primarily
informational  messages,  and  are  never  errors.    Parentheses
enclose non-fatal errors and informational Datacomputer messages,
such  as  '(LEBAR2:  ERROR:  NO  SUCH  FILE)',  resulting from an
attempt to DELETE a nonexistent file, and '(SXPF9:  STAGING  DATA
FOR FILE = DFTP.CCA.DFTP.<FILES>)', indicating that data is being
moved  from  tertiary  mass  memory  to  secondary buffer memory.
These messages come directly from the Datacomputer, indicated  by
the  name  and  colon  at  the  head of the message.  Fatal error
messages are surrounded by question marks, and  of  course  never
occur.
                     Site Dependent Features
     For  the  TENEX  and  TOPS-20  versions,  the  EXEC  command
provides  the  user  with an inferior exec, which is flushed when
the user returns to DFTP.  Where a local file  name  is  possible
(in  the GET and PUT commands) an initial space or escape invokes
name recognition, indicated by a '>' prompt.  A  <control-O>  can
be  used to halt the output from the LIST and DIRECTORY commands.
     For the TOPS-10 version, the LOCAL-DIRECTORY  command  lists
the  user's  local  file  directory.  The LOCAL-STRUCTURE command
sets the file structure (e.g. DSKC:), and the LOCAL-USER  command
                             - 11 -
sets  the  project and programmer.  Both commands affect the GET,
PUT, and LOCAL-DIRECTORY commands.
     For the ITS  version  the  LOCAL-CONNECT  command  specifies
which  SNAME  (local  directory)  is  used  for  the  GET and PUT
commands.  If a carriage return is typed with  no  argument,  the
user's  default  SNAME  is used.  The TERSE command (unset by the
VERBOSE command) suppresses informational  Datacomputer  messages
(such   as   the   staging   message   below),   and  performs  a
NO-DATALANGUAGE and an UNTIME-TRANSFERS.
                         Access Control
     DFTP access control uses a subset of the  full  Datacomputer
mechanism.   A  complete  discussion  of  Datacomputer  privilege
facilities can be found in the current Datacomputer User  Manual.
     Access privileges are defined in privilege  blocks  attached
to  nodes  in  the  directory.   A  node  may  have any number of
privilege blocks attached to it.  Each block consists of a set of
privileges and a class of users to whom that set  applies.   DFTP
provides two classes of access, control and read.  Control allows
users  to  ATTACH to a node, CREATE and ALLOCATE nodes below that
node, CHANGE privileges at and below that node, and read,  write,
and  delete  data stored below that node.  Read only allows users
to ATTACH to a node and read data stored  under  it.   All  other
users are denied everything but the ability to LIST nodes.  Users
are  identified either by passwords, or by their network identity
                             - 12 -
(defined by the host  and  socket  from  which  they  access  the
Datacomputer),  or  both.   Some  systems  enforce  assignment of
socket numbers according to the user's identity on  that  system,
thus providing convenient automatic identification to DFTP.
     When a user attemps to access a node,  or  manipulate  nodes
and  data  under  it, the Datacomputer compares the user with the
user classes identified in privilege blocks  on  that  node,  and
assigns the corresponding class of privileges.  If no set matches
the  user,  no  privileges are allowed.  the privilege blocks are
scanned in the order of creation, and if a user matches more than
one block, the first takes effect.  Access controls  are  set  by
the  CHANGE  and  CREATE  commands,  described  in  the following
section.
                       Privileged Commands
     Privileged  commands  are  made  available  via  the  ENABLE
command.   Its action is marked by a change in the command prompt
from '*' to '!'.   The  DISABLE  command  undoes  the  effect  of
ENABLE.
     The ALLOCATE command is used to set the  maximum  number  of
megabits  a  user  may  consume.   It  can  also  be  used to set
subdirectory  limits.   Allocations  are  made  and  reported  in
megabits  -- 1,013,760 bits to be precise, the size of a block on
the Datacomputer's tertiary memory.  A megabit is  roughly  equal
to 55 512-word pages, or 220 128-word blocks.
                             - 13 -
     The CHANGE command redefines the access control  information
for  a  given  node.   It  deletes  all  existing  access control
information  (privilege   blocks),   then   builds   new   blocks
interactively  with  the  user.  The PROTECTION subcommand of the
LIST command can be used  to  examine  the  privilege  blocks  of
nodes.
     The CREATE command is used to create a node for a new  user.
After  the node has been created, the access control is specified
as with the CHANGE command.
     The LINK command allows the user to send Datalanguage to the
Datacomputer.  Each line of  input,  prompted  by  '>',  is  sent
directly  to  the  Datacomputer,  without any processing by DFTP.
Return to DFTP command input is  achieved  by  inputting  a  null
line.
                             - 14 -
               Examples Using Privileged Commands
;Attach to a node.
; (gain control at site CCA by supplying the proper password)
*ATTACH <<<CCA:
*ENABLE
;Create a user and privileges.
; (the first privilege allows creation and deletion for
;   local user HACKER upon supplying the password "ETAOIN")
; (the second privilege allows creation and deletion for
;   anyone from Harvard (host 11) upon supplying the password "SHRDLU")
; (the third privilege allows anyone read)
!CREATE HACKER
 [OK]
 Add a new privilege? Yes
  Allow control? Yes
  Restrict via network? Yes
   Restrict via local host? Yes
   Restrict via user? Yes
    User: HACKER
  Restrict via password? Yes
   Password: ETAOIN
  [OK]
 Add a new privilege? Yes
  Allow control? Yes
  Restrict via network? Yes
   Restrict via local host? No
    Site: 11
   Restrict via user? No
  Restrict via password? Yes
   Password: SHRDLU
  [OK]
 Add a new privilege? Yes
  Allow control? No
  Restrict via network? No
  Restrict via password? No
  [OK]
 Add a new privilege? No
;List the privileges.
; (in Datacomputer format (passwords are never listed))
!LIST HACKER
!!PROTECTION
    CCA
        HACKER
            ] (1),U=**,H=31,S=12582928,G=CLWRA
            ] (2),U=**,H=9,S=ANY,G=CLWRA
            ] (3),U=**,H=ANY,S=ANY,G=LR
                             - 15 -
;Replace the privileges.
; (the first privilege allows creation and deletion for
;   local user HACKER)
; (the second privilege allows anyone read
;   upon supplying the password "WALDO")
; (the "[OK]" indicates that the previous privileges have been deleted)
!CHANGE HACKER
 [OK]
 Add a new privilege? Yes
  Allow control? Yes
  Restrict via network? Yes
   Restrict via local host? Yes
   Restrict via user? Yes
    User: HACKER
  Restrict via password? No
  [OK]
 Add a new privilege? Yes
  Allow control? No
  Restrict via network? No
  Restrict via password? Yes
   Password: WALDO
  [OK]
 Add a new privilege? No
;List the privileges.
!LIST HACKER
!!PROTECTION
    CCA
        HACKER
            ] (1),U=**,H=31,S=12582928,G=CLWRA
            ] (2),U=**,H=ANY,S=ANY,G=LR
;List all information.
; ("MX-U" indicates the maximum allocation in megabits)
!LIST HACKER
!!VERBOSE
    CCA
        HACKER
            ] MX-U=10.00 CHRG=0.00
            ] IN-N=0 IN-F=0
            ] CREA=761101052805
;Change the allocation.
; (decrease the allocation from 10 megabits to 2 megabits)
!ALLOCATE HACKER
 [Megabits:2]
;List all information.
!LIST HACKER
!!VERBOSE
    CCA
        HACKER
            ] MX-U=2.00 CHRG=0.00
            ] IN-N=0 IN-F=0
            ] CREA=761101052805
                             - 16 -
                            Commands
ATTACH <node path>
BIG <node path>
CONNECT <node path> (1)
DELETE <file path> (4) (5)
DIRECTORY <file path> (4) (6) (8)
        DELETED
        TERSE
        VERBOSE
EXAMINE <file path> (4) (6)
EXPUNGE <node path> (2)
GET (RETRIEVE) <file path> [local file name synonym] (4) (6) (9)
LIST <node path> (3) (8)
        TERSE
        VERBOSE
NO-DATALANGUAGE
PUT (STORE) <file path> [remote file path synonym] (4) (9)
QUIT
REMOVE <node path> (3)
RENUMBER <file path> (5)
        Version number: <decimal integer>
SHOW-DATALANGUAGE
TIME-TRANSFERS
UNDELETE <file path> (4) (7)
UNTIME-TRANSFERS
                             - 17 -
                     Site Dependent Commands
EXEC (10)
LOCAL-DIRECTORY (11)
LOCAL-STRUCTURE <string> (11)
LOCAL-USER (11)
        Project: <octal integer> (12)
        Programmmer: <octal integer> (12)
LOCAL-CONNECT <string> (13)
TERSE (13)
VERBOSE (13)
                             - 18 -
                       Privileged Commands
ALLOCATE <node path>
    Megabits: <decimal integer>
CHANGE <node path>
    Add a new privilege? <Y or N>
        Allow write? <Y or N>
        Restrict via network? <Y or N>
            Restrict via local host? <Y or N>
                Host number (octal): <octal integer>
                  (if host not local)
            Restrict via user? <Y or N>
                Socket number (octal): <octal integer>
                  (if user restricted and host not local)
                User: <user name> (14)
                  (if user restricted and host local)
        Restrict via password? <Y or N>
            Password: <string>
CREATE <node path>
    (see CHANGE)
DISABLE
ENABLE
LINK (15)
LIST <node path>
    PROTECTION
                             - 19 -
Notes:
     Required input is indicated by angle brackets.
     Optional input is indicated by square brackets.
     The connect context is the default context for all  commands
          except   ATTACH   and  CONNECT,  which  have  as  their
          respective defaults the  top  context  and  the  attach
          context.
     (1) The default argument is <<.
     (2) The default argument is <.
     (3) The default argument (and trailer) is **.
     (4) The default argument (and trailer) is *.*;*.
     (5) The default version is the lowest undeleted.
     (6) The default version is the highest undeleted.
     (7) The default version is the highest deleted.
     (8) On TENEX and TOPS-20 sites,  a  <control-O>  will  abort
          output.
     (9) On TENEX  and  TOPS-20  sites,  an  initial  <space>  or
          <escape>  as  file  name  input invokes local file name
          recognition.
     (10) Available on TENEX and TOPS-20 sites only.
     (11) Available on TOPS-10 sites only.
     (12) The argument is a <string> on SAIL sites.
     (13) Available on ITS sites only.
     (14) A directory name if  TENEX  or  TOPS-20,  a  programmer
          number if TOPS-10 (not used on SAIL or ITS).
     (15) A null input line returns the user to command mode.
                             - 20 -
                              Paths
<node path> :: =  <context>
                | <node list>
                | **
                | <context> **
                | <context> <node list>
                | <context> <node list> > **
                                        ←
                | <node list> > **
                              ←
<context> ::=     <             (connect context)
                  ←
                | <<            (attach context)
                  ←←
                | <<<           (top context)
                  ←←←
<node list> ::=   <node>
                | <node> > <node list>
                         ←
<node> ::=        <name>
                | <name> : <password>
                | *
<file path> ::=   <file name>
                | <context> <file name>
                | <node list> > <file name>
                              ←
                | <context> <node list> > <file name>
                                        ←
<file name> ::=   <file>
                | <file> .
                | <file> . <extension>
                | <file> ; <version>
                | <file> . ; <version>
                | <file> . <extension> ; <version>
<file> ::= <name> | *
<extension> ::= <name> | *
<version> ::= <number> | *
Notes:
     Underscored  angle  brackets  are  literal  characters   and
          accepted by DFTP as such.
     Any printing ASCII characters except <, >, ., :,  *,  ?,  ',
          and " may be used in a <name>.
     Any printing ASCII characters (plus space) except >,  .,  ',
          and " may be used in a <password>.
                             - 21 -